home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
090
/
byt1186b.arc
/
RUNGKUT.LBR
/
ONEBODY.BAS
< prev
next >
Wrap
BASIC Source File
|
1986-04-11
|
2KB
|
46 lines
10 REM N = THE NUMBER OF INTEGRATORS
20 REM V(I) = INTEGRATOR INPUTS
30 REM X(I) = INTEGRATOR OUTPUTS
40 REM X(1) = VELOCITY; X(2) = DISPLACEMENT
50 REM C = THE DAMPING CONSTANT
60 REM M = MASS; K = SPRING CONSTANT
70 REM TMIN = TIME AT WHICH PRINTING TO OUTPUT FILE BEGINS
80 REM TMAX = TIME AT WHICH PRINTOUT ENDS
90 REM DT = TIME STEP SIZE
100 REM ********************************
110 OPEN"OUT.DAT" FOR OUTPUT AS #1
120 N=2:C=1500:M=2:K=100000!
130 DIM X(N),K1(N),K2(N),K3(N),K4(N),DUM(N),V(N)
140 DT=.0001:TMIN=DT:TMAX=500*DT
150 REM FNX(T) IS THE DRIVING FORCE
160 DEF FNX(T)=5000*(SIN(200*T))^5
170 REM NEXT ARE THE INITIAL CONDITIONS ON VELOCITY,X(1),AND DISPLACEMENT X(2)
180 X(1)=.001:X(2)=.001
190 REM NEXT IS THE EQUATION FOR THE INPUT TO INTEGRATOR #1
200 REM IN THIS CASE, THERE IS COULOMB DAMPING
210 V(1)=(FNX(T)-K*X(2)-C*SGN(X(1)))/M:V(2)=X(1)
220 REM NEXT ARE THE STEPS IN THE INTEGRATION ACROSS ONE TIME STEP
230 COUNT=COUNT+1:IF COUNT=2 THEN 260:IF COUNT=3 THEN 270:IF COUNT=4 THEN 280
240 FOR I= 1 TO N:K1(I)=DT*V(I):NEXT I
250 T=T+DT/2:FOR I=1 TO N:DUM(I)=X(I):X(I)=DUM(I)+K1(I)/2:NEXT I:IF COUNT=1 THEN 210
260 FOR I= 1 TO N:K2(I)=DT*V(I):X(I)=DUM(I)+K2(I)/2:NEXT I:IF COUNT=2 THEN 210
270 FOR I=1 TO N:K3(I)=DT*V(I):X(I)=DUM(I)+K3(I):NEXT I:T=T+DT/2:IF COUNT=3 THEN 210
280 FOR I=1 TO N:K4(I)=DT*V(I):X(I)=DUM(I)+(K1(I)+K4(I))/6+(K2(I)+K3(I))/3:NEXT I
290 REM NEXT STEPS APPROXIMATE STATIC/DYNAMIC FRICTION
300 IF ABS(X(1))>.5 THEN 330
310 C=3000
320 GOTO 340
330 C=1500
340 IF X(2)>1! THEN 440
350 REM FROM RUNNING THIS A FEW TIMES, WE EXPECT ABS(DISPLACEMENT) < .030
360 REM OVER THIS RANGE, THE NONLINEAR SPRING RATE CAN BE APPROXIMATED AS FOLLOWS:
370 K=100000!+300000!*(SIN(50*X(2)))^4
380 IF T<TMIN THEN 210
390 PRINT #1,FNX(T):FOR I=1 TO N:PRINT #1,X(I):NEXT I
400 IF T>TMAX THEN 420
410 GOTO 210
420 CLOSE
430 GOTO 450
440 PRINT" DIVERGENT OSCILLATION ENCOUNTERED"
450 END